﻿using System;
using System.Text;

public static class ExtendFunction
{
    public static byte[] RemoveUTF8Bom(this byte[] bytes)
    {
        byte[] ret;
        if (bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF)
        {
            byte[] _bytes = new byte[bytes.Length - 3];
            Buffer.BlockCopy(bytes, 3, _bytes, 0, _bytes.Length);
            ret = _bytes;
        }
        else
        {
            ret = bytes;
        }
        return ret;
    }
    public static string ByteToString(this byte[] bts)
    {
        return System.Text.Encoding.Default.GetString(bts);
    }

    public static string ToUTF8(this byte[] bytes)
    {
        string str = Encoding.UTF8.GetString(bytes.RemoveUTF8Bom());
        return str;
    }

    public static byte[] HexStrTobyte(this string hexString)
    {
        hexString = hexString.Replace(" ", "");
        if ((hexString.Length % 2) != 0)
            hexString += " ";
        byte[] returnBytes = new byte[hexString.Length / 2];
        for (int i = 0; i < returnBytes.Length; i++)
            returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16);
        return returnBytes;
    }

    public static string byteToHexStr(this byte[] bytes)
    {
        string byteStr = string.Empty;
        if (bytes != null && bytes.Length > 0)
        {
            foreach (var item in bytes)
            {
                byteStr += string.Format("{0:X2}", item);
            }
        }
        return byteStr;
    }
}
